package com.sugon.modules.mold.service;

import com.sugon.entity.ModuleArchivesEntity;
import com.sugon.modules.mold.consts.MoldStatusChangeAction;
import com.sugon.modules.mold.model.vo.MoldHealthyStatusVO;
import com.sugon.utils.PageUtils;

import java.util.List;
import java.util.Map;

/**
 * @author ： YuXD
 * @description： 模具档案Manager
 * @date ： 2021-03-19 下午 2:13
 * @version: 1.0
 */
public interface IMoldArchivesManager {

    /**
     * 新增模具，同时自动拉取对应模具分类下的关联位置信息
     *
     * @param mold 模具基础信息
     * @return
     */
    boolean newlyAdd(ModuleArchivesEntity mold);

    /**
     * 更新模具信息，并检测是否更换模具分类
     * 如果更换模具分类，则更换模具关联位置
     *
     * @param mold 模具基础信息
     * @return
     */
    boolean update(ModuleArchivesEntity mold);

    /**
     * 备件查询通用方法，为PC端和移动端使用
     *
     * @param params 查询参数
     * @return
     */
    PageUtils queryList(Map<String, Object> params);

    /**
     * 加载车间模具健康状态数据
     *
     * @param foundryWorkshopId 铸造车间ID
     * @param moldParentType    模具父类型
     * @param moldStatus        模具状态
     * @return
     */
    List<MoldHealthyStatusVO> loadWorkshopMoldHealthyStatusData(String foundryWorkshopId, String productModel, Integer moldStatus);

    /**
     * 转换模具状态，主要作用是更新模具状态以及保存模具状态变换记录
     *
     * @param moldId                 模具ID
     * @param moldStatusChangeAction 模具状态变更动作
     * @return
     */
    boolean changeStatusByMoldId(String moldId, String moldNo, MoldStatusChangeAction moldStatusChangeAction);

    /**
     * 恢复模具状态到以前
     * 1、更新模具状态
     * 2、失效模具记录
     *
     * @param moldId 模具ID
     * @return
     */
    boolean recoverStatusByMoldId(String moldId);

    /**
     * 模具维护时对模具最近一次的时间进行设置
     *
     * @param moldId 模具ID
     * @return
     */
    boolean doMoldPm(String moldId);

}
